package com.xiaoKe.zhonghzu.ui;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.http.SslError;
import android.os.Build;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.xiaoKe.zhonghzu.R;
import com.xiaoKe.zhonghzu.databinding.ActivityWebTitleBinding;
import com.xiaoKe.zhonghzu.global.base.BaseActivity;
import com.xiaoKe.zhonghzu.global.base.BaseApplication;
import com.xiaoKe.zhonghzu.global.dialog.ToastDialog;
import com.xiaoKe.zhonghzu.global.tool.ConfigUtils;
import com.xiaoKe.zhonghzu.global.tool.LoggerTool;
import com.xiaoKe.zhonghzu.global.tool.ResourceTool;


/**
 *
 */
public class WebActivity extends BaseActivity<ActivityWebTitleBinding> {
    private String url; //链接

    @Override
    protected void initView() {
        binding.progressBar.setProgress(0);
        binding.progressBar.setMax(100);
        binding.progressBar.setVisibility(View.VISIBLE);
        findViewById(R.id.ivBackLeft).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        toastDialog = new ToastDialog();
        toastDialog.show(getSupportFragmentManager(), "");

        url = getIntent().getStringExtra("url");
        LoggerTool.e(url);
        WebSettings webSettings = binding.wvWebview.getSettings();
        //如果访问的页面中要与Javascript交互，则webview必须设置支持Javascript
        webSettings.setJavaScriptEnabled(true);
        // 若加载的 html 里有JS 在执行动画等操作，会造成资源浪费（CPU、电量）
        // 在 onStop 和 onResume 里分别把 setJavaScriptEnabled() 给设置成 false 和 true 即可
        webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
        webSettings.setSupportZoom(false); //支持缩放，默认为true。是下面那个的前提。
        webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false，则该WebView不可缩放
        webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //关闭webview中缓存
        webSettings.setAllowFileAccess(true); //设置可以访问文件
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
        webSettings.setDomStorageEnabled(true);//通过WebSettings设置开启DOM Storage功能
        webSettings.setBlockNetworkImage(false); ////解决图片不显示
        binding.wvWebview.addJavascriptInterface(this, "injectedObject");
        binding.wvWebview.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    binding.wvWebview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
                }
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                if (null != toastDialog) {
                    toastDialog.dismiss();
                }
            }

        });
        binding.wvWebview.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                if (newProgress == 100) {
                    if (null!= binding && null!= binding.progressBar){
                        binding.progressBar.setVisibility(View.GONE);
                    }

                }
                if (null!= binding && null!= binding.progressBar){
                    binding.progressBar.setProgress(newProgress);
                }
                Log.d("TAG", "newProgress: " + newProgress);
            }

            @Override
            public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
                switch (consoleMessage.messageLevel()) {
                    case ERROR://将error信息上报到服务端
                        LoggerTool.e("webview==" + consoleMessage.message() + " level=" + consoleMessage.messageLevel());
                        LoggerTool.e(consoleMessage.message());
                        break;
                }
                return super.onConsoleMessage(consoleMessage);

            }
        });
        /**设置适应Html5的一些方法*/
        binding.wvWebview.clearCache(true);
        webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
        //java与js回调，自定义方法
        //1.java调用js
        //2.js调用java
        //首先java暴露接口，供js调用
        /**
         * obj:暴露的要调用的对象
         * interfaceName：对象的映射名称 ,object的对象名，在js中可以直接调用
         * 在html的js中：JSTest.showToast(msg)
         * 可以直接访问JSTest，这是因为JSTest挂载到js的window对象下了
         */
        binding.wvWebview.loadUrl(url);
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (null != binding && null != binding.wvWebview) {
            binding.wvWebview.clearCache(true);
            binding.wvWebview.clearHistory();
            ((ViewGroup) binding.wvWebview.getParent()).removeView(binding.wvWebview);
            binding.wvWebview.destroy();
        }

    }


}
